using System;
using System.Collections.Generic;
using System.Text;

namespace Ltf.Remoting.RemoteEvents
{
    //args for lizard events to monitor
	public class LizardEventArgs : EventArgs
	{
		public string PathList;
		public string[] Paths;


		public FormTypes FormType;

		public LizardEventArgs(string pathList)
		{
			PathList = pathList;
			FormType = FormTypes.None;
		}

		public LizardEventArgs(string[] paths, FormTypes formType)
		{
			Paths = paths;
			FormType = formType;
		}

		internal LizardEventArgs(FormTypes formType)
		{
			FormType = formType;
		}

	}

	public class ProgressEventArgs : LizardEventArgs
	{
		public string Title, MainLabelText;
		public int MaxProgress, ProgressIncrement;
		public bool AllowCancel;
		public EventHandler IncrementHandler;


		public ProgressEventArgs(string title, string mainLabelText, int maxProgress, int progressIncrement, bool allowCancel)
			: base(FormTypes.ProgressIndicator)
		{
			Title = title;
			MainLabelText = mainLabelText;
			MaxProgress = maxProgress;
			ProgressIncrement = progressIncrement;
			AllowCancel = allowCancel;
		}

	}

	public enum ReviewPrimaryFunction
	{
		GetLatest,
		GetSpecific,
		CheckIn,
		Undo,
		ViewConflicts,
		Shelve

	}

	public class LizardReviewEventArgs : LizardEventArgs
	{
		public ReviewPrimaryFunction Function;
		public bool ShowConflicts;
		public bool ShowOutOfDate;
		public bool ShowPendings;
		public bool ShowUnchangedPendings;
		public bool CheckinComments;
		public bool GetOptions;
		public bool ShelveOptions;

		public LizardReviewEventArgs(string[] paths, ReviewPrimaryFunction function, bool showConflicts, bool showOutOfDate, bool showPendings,
			bool showUnchangedPendings, bool checkinComments, bool getOptions, bool shelveOptions)
			: base(paths, FormTypes.LizardReview)
		{
			Function = function;
			ShowConflicts = showConflicts;
			ShowOutOfDate = showOutOfDate;
			ShowPendings = showPendings;
			ShowUnchangedPendings = showUnchangedPendings;
			CheckinComments = checkinComments;
			GetOptions = getOptions;
			ShelveOptions = shelveOptions;
		}


	}
}
